#!/usr/bin/env node

// Node CLI 应用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macOS 系统下还需要修改此文件的读写权限为 755
// 具体就是通过 chmod 755 cli.js 实现修改

// 脚手架的工作过程：
// 1. 通过命令行交互询问用户问题
// 2. 根据用户回答的结果生成文件

const inquirer = require("inquirer");
const xlsx = require("node-xlsx");
const fs = require("fs-extra");
const glob = require("glob");

inquirer
  .prompt([
    {
      type: "input", // 交互方式: 命令输入
      name: "exclePath", // 问题的key
      message: "excle 路径", // 问题的提示
    },
    {
      type: "input", // 交互方式: 命令输入
      name: "wordPath", // 问题的key
      message: "报告的文件夹路径", // 问题的提示
    },
  ])
  .then((anwsers) => {
    // 解析得到文档中的所有 sheet
    const exclePath = anwsers.exclePath.trim();
    const wordPath = anwsers.wordPath.trim();
    const sheets = xlsx.parse(exclePath);

    // 遍历 sheet
    sheets.forEach(function (sheet) {
      // 每行内容: [ 1, '172.18.64.10', '社保系统_网上申报', '博宇', '李永' ],
      for (const row of sheet.data) {
        // 如果存在 ip 地址
        if (row[0] > 0 && row[1]) {
          glob(`${wordPath}/${row[1]}.doc`, (err, files) => {
            console.log(`${wordPath}/${row[1]}.doc`, err, files);
            if (!err) {
              try {
                // D:/desktop/word/172.18.64.10.doc
                const ipFileAbsolutePath = files[0];
                // 172.18.64.10.doc
                const ipFilePath = ipFileAbsolutePath.slice(
                  ipFileAbsolutePath.lastIndexOf("/"),
                  ipFileAbsolutePath.length
                );

                fs.moveSync(
                  ipFileAbsolutePath,
                  `${wordPath}/${row[3]}/${row[2]}${ipFilePath}`,
                  { overwrite: true }
                );
              } catch {
                console.log(
                  `编号${row[0]}: ${row[3]}>${row[2]}: 缺少 ${row[1]} 文件`
                );
              }
            }
          });
        } else if (row[0] > 0) {
          console.log(`编号${row[0]}: ${row[3]} > ${row[2]}: 缺少IP地址`);
        }
      }
    });
  });
